package com.zenithmind.version.pojo.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.time.LocalDateTime;

/**
 * 分支VO
 * 
 * @author ZenithMind Team
 * @since 2025-01-09
 */
@Data
@Schema(description = "分支VO")
public class BranchVO {

    /**
     * 分支ID
     */
    @Schema(description = "分支ID")
    private String id;

    /**
     * 仓库ID
     */
    @Schema(description = "仓库ID")
    private String repositoryId;

    /**
     * 仓库名称
     */
    @Schema(description = "仓库名称")
    private String repositoryName;

    /**
     * 分支名称
     */
    @Schema(description = "分支名称")
    private String branchName;

    /**
     * 分支描述
     */
    @Schema(description = "分支描述")
    private String description;

    /**
     * 源分支ID
     */
    @Schema(description = "源分支ID")
    private String sourceBranchId;

    /**
     * 源分支名称
     */
    @Schema(description = "源分支名称")
    private String sourceBranchName;

    /**
     * 最新提交ID
     */
    @Schema(description = "最新提交ID")
    private String latestCommitId;

    /**
     * 最新提交哈希
     */
    @Schema(description = "最新提交哈希")
    private String latestCommitHash;

    /**
     * 最新提交消息
     */
    @Schema(description = "最新提交消息")
    private String latestCommitMessage;

    /**
     * 是否为默认分支
     */
    @Schema(description = "是否为默认分支")
    private Boolean isDefault;

    /**
     * 是否为保护分支
     */
    @Schema(description = "是否为保护分支")
    private Boolean isProtected;

    /**
     * 是否已归档
     */
    @Schema(description = "是否已归档")
    private Boolean isArchived;

    /**
     * 分支状态
     */
    @Schema(description = "分支状态")
    private Integer status;

    /**
     * 状态名称
     */
    @Schema(description = "状态名称")
    private String statusName;

    /**
     * 提交数量
     */
    @Schema(description = "提交数量")
    private Long commitCount;

    /**
     * 领先提交数
     */
    @Schema(description = "领先提交数")
    private Integer aheadCount;

    /**
     * 落后提交数
     */
    @Schema(description = "落后提交数")
    private Integer behindCount;

    /**
     * 创建者ID
     */
    @Schema(description = "创建者ID")
    private String creatorId;

    /**
     * 创建者名称
     */
    @Schema(description = "创建者名称")
    private String creatorName;

    /**
     * 最后提交者ID
     */
    @Schema(description = "最后提交者ID")
    private String lastCommitterId;

    /**
     * 最后提交者名称
     */
    @Schema(description = "最后提交者名称")
    private String lastCommitterName;

    /**
     * 最后提交时间
     */
    @Schema(description = "最后提交时间")
    private LocalDateTime lastCommitTime;

    /**
     * 创建时间
     */
    @Schema(description = "创建时间")
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    @Schema(description = "更新时间")
    private LocalDateTime updateTime;

    /**
     * 是否可编辑
     */
    @Schema(description = "是否可编辑")
    private Boolean canEdit;

    /**
     * 是否可删除
     */
    @Schema(description = "是否可删除")
    private Boolean canDelete;

    /**
     * 是否可合并
     */
    @Schema(description = "是否可合并")
    private Boolean canMerge;
}
